Recommendation engines seek to select content (such as music, books, movies, consumer goods, or the like), that is beneficial or interesting to a user, using a model built from the characteristics of an item (content-based approaches), characteristics and/or past behavior of the user, and/or the user's context (collaborative filtering approaches).
Recommendation engines have become common in recent years. For example, when viewing a product on an ecommerce website, some online retailers will recommend additional items based on a matrix of what other shoppers purchased when purchasing the currently viewed item. Similarly, music streaming sites may take an initial input of a song or musician and play music with similar characteristics, while video streaming sites may offer predictions of movies and/or videos that a user might like to watch based on factors such as the user's previous preferences, ratings, and watching habits (as compared to the behavior of other users), the characteristics (such as the genre) of the movie and/or video, and the like.
Recommendation engines typically produce a list of recommendations using one or a combination of two approaches: collaborative filtering and/or content-based filtering.
Collaborative filtering methods are based on collecting and analyzing a large amount of information on users' behaviors, activities, and/or preferences. Using the model thereby developed, a collaborative filtering recommendation engine predicts what users will like based on their similarity to other users.
One advantage of the collaborative filtering approach is that it does not rely on analyzing the content and therefore it is capable of accurately recommending items without requiring an “understanding” of the item itself. Many algorithms have been used in measuring user similarity or item similarity in recommender systems. For example, the k-nearest neighbor (k-NN) approach, the Pearson Correlation, and the like.
When building a model, a collaborative filtering recommendation engine may collect user-profile data in various ways, such as some or all of the following.                Asking a user to rate an item on a sliding scale.        Asking a user to rank a collection of items from favorite to least favorite.        Presenting two items to a user and asking him/her to choose the better one of them.        Asking a user to create a list of items that he/she likes.        Observing the items that a user views in an online store.        Analyzing item/user viewing times        Keeping a record of the items that a user purchases online.        Obtaining a list of items that a user has listened to or watched on his/her computer.        Analyzing the user's social network and discovering similar likes and dislikes Collaborative filtering approaches can be problematic in certain situations. For example, a collaborative filtering recommendation engine may not be able to make accurate recommendations unless its model includes a large amount of existing data on a user.        
Also, a collaborative filtering recommendation engine generally requires a large amount of computation to make recommendations when there are many thousands or millions of users and items. Due to the large computation requirements, collaborative filtering recommendation engines generally pre-compute a batch of recommendations offline, before a recommendation-request is made.
By contrast, content-based filtering methods are based on information about and characteristics of the items that are going to be recommended. Such algorithms try to recommend items that are similar to those that a user liked in the past (or is examining in the present). In particular, various candidate items are compared with items previously rated and/or encountered by the user and the best-matching items are recommended.
However, the above approaches may be unsatisfactory when a recommendation engine provides recommendations for many thousands or millions of items and users based on very little data.